package cn.ware.house.interfaces.entity.inbound;

import com.fasterxml.jackson.annotation.JsonAlias;

import java.math.BigDecimal;
import java.util.List;

public class InboundProduct {

    private Integer id; // 入库产品编号，唯一标识每个入库产品记录，对应数据库表中的id字段
    private Integer productId; // 商品编号，关联到商品基础信息表，确定具体是哪个商品入库，对应数据库表中的product_id字段
    private String productName; // 商品名称，展示商品的名称，与商品基础信息表中的名称对应，对应数据库表中的product_name字段
    private String productSpec; // 商品规格，例如包装大小、型号等规格参数，与商品基础信息表中的规格对应，对应数据库表中的product_spec字段
    @JsonAlias("purchasePrice")
    private BigDecimal purchasePrice; // 进价，商品的进货价格，与商品基础信息表中的进价对应，对应数据库表中的purchase_price字段
    private BigDecimal salePrice; // 售价，商品销售给客户的价格，与商品基础信息表中的售价对应，对应数据库表中的sale_price字段
    private String brand; // 商品所属品牌，与商品基础信息表中的品牌对应，对应数据库表中的brand字段
    private Integer categoryId; // 商品分类编号，关联到商品分类表，确定商品所属类别，与商品基础信息表中的分类对应，对应数据库表中的category_id字段
    private String mainImagePath; // 商品主图照片路径，存储商品主图的文件路径，与商品基础信息表中的主图路径对应，对应数据库表中的main_image_path字段
    private BigDecimal discount; // 商品折扣信息，如0.8表示八折，与商品基础信息表中的折扣信息对应，对应数据库表中的discount字段
    private Integer inboundQuantity; // 本次入库的产品总数量，记录该商品在本次入库操作中的入库数量，对应数据库表中的inbound_quantity字段
    private BigDecimal inboundValue; // 本次入库的产品总价值，根据本次入库数量和进价等计算得出的该商品本次入库的总价值金额，对应数据库表中的inbound_value字段
    private Integer inboundOrderId; // 入库订单编号，关联到入库订单表，表明该商品属于哪次入库业务，对应数据库表中的inbound_order_id字段
    private List<InboundProductStyle> inboundProductStyles; // 新增用于存储该入库产品对应的样式信息集合属性

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public Integer getProductId() {
        return productId;
    }

    public void setProductId(Integer productId) {
        this.productId = productId;
    }

    public String getProductName() {
        return productName;
    }

    public void setProductName(String productName) {
        this.productName = productName;
    }

    public String getProductSpec() {
        return productSpec;
    }

    public void setProductSpec(String productSpec) {
        this.productSpec = productSpec;
    }

    public BigDecimal getPurchasePrice() {
        return purchasePrice;
    }

    public void setPurchasePrice(BigDecimal purchasePrice) {
        this.purchasePrice = purchasePrice;
    }

    public BigDecimal getSalePrice() {
        return salePrice;
    }

    public void setSalePrice(BigDecimal salePrice) {
        this.salePrice = salePrice;
    }

    public String getBrand() {
        return brand;
    }

    public void setBrand(String brand) {
        this.brand = brand;
    }

    public Integer getCategoryId() {
        return categoryId;
    }

    public void setCategoryId(Integer categoryId) {
        this.categoryId = categoryId;
    }

    public String getMainImagePath() {
        return mainImagePath;
    }

    public void setMainImagePath(String mainImagePath) {
        this.mainImagePath = mainImagePath;
    }

    public BigDecimal getDiscount() {
        return discount;
    }

    public void setDiscount(BigDecimal discount) {
        this.discount = discount;
    }

    public Integer getInboundQuantity() {
        return inboundQuantity;
    }

    public void setInboundQuantity(Integer inboundQuantity) {
        this.inboundQuantity = inboundQuantity;
    }

    public BigDecimal getInboundValue() {
        return inboundValue;
    }

    public void setInboundValue(BigDecimal inboundValue) {
        this.inboundValue = inboundValue;
    }

    public Integer getInboundOrderId() {
        return inboundOrderId;
    }

    public void setInboundOrderId(Integer inboundOrderId) {
        this.inboundOrderId = inboundOrderId;
    }

    public List<InboundProductStyle> getInboundProductStyles() {
        return inboundProductStyles;
    }

    public void setInboundProductStyles(List<InboundProductStyle> inboundProductStyles) {
        this.inboundProductStyles = inboundProductStyles;
    }

    @Override
    public String toString() {
        return "InboundProduct{" +
                "id=" + id +
                ", productId=" + productId +
                ", productName='" + productName + '\'' +
                ", productSpec='" + productSpec + '\'' +
                ", purchasePrice=" + purchasePrice +
                ", salePrice=" + salePrice +
                ", brand='" + brand + '\'' +
                ", categoryId=" + categoryId +
                ", mainImagePath='" + mainImagePath + '\'' +
                ", discount=" + discount +
                ", inboundQuantity=" + inboundQuantity +
                ", inboundValue=" + inboundValue +
                ", inboundOrderId=" + inboundOrderId +
                ", inboundProductStyles=" + inboundProductStyles +
                '}';
    }
}
